﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using System.ServiceModel.Web;

using nms.gaming.model;

namespace nms.gaming.webservice
{
    /// <summary>
    /// </summary>
    [ServiceContract]
    public interface IExchangeRateService
    {
        [OperationContract]
        [WebGet(UriTemplate = "{source}/{destination}/query$format=xml", ResponseFormat = WebMessageFormat.Xml)]
        [FaultContractAttribute(typeof(ServiceFault), Name = "servicefault", Namespace = "nms.gaming", Action = "http://www.nms.co.uk/gaming/servicefault")]
        nms.gaming.model.ExchangeRate[] ExchangeRateQuery(string source, string destination);

        [OperationContract]
        [WebGet(UriTemplate = "{source}/{destination}/query", ResponseFormat = WebMessageFormat.Json)]
        [FaultContractAttribute(typeof(ServiceFault), Name = "servicefault", Namespace = "nms.gaming", Action = "http://www.nms.co.uk/gaming/servicefault")]
        nms.gaming.model.ExchangeRate[] ExchangeRateQueryJSON(string source, string destination);

        [OperationContract]
        [WebGet(UriTemplate = "{source}/{destination}/query$format=json", ResponseFormat = WebMessageFormat.Json)]
        [FaultContractAttribute(typeof(ServiceFault), Name = "servicefault", Namespace = "nms.gaming", Action = "http://www.nms.co.uk/gaming/servicefault")]
        nms.gaming.model.ExchangeRate[] ExchangeRateQueryJSON_EXPLICIT(string source, string destination);



        /// <summary>
        /// </summary>
        /// <param name="source"></param>
        /// <param name="destination"></param>
        /// <param name="rate"></param>
        /// <returns></returns>
        [OperationContract]
        [WebGet(UriTemplate = "{source}/{destination}/update$format=xml?rate={rate}", ResponseFormat = WebMessageFormat.Json)]
        [FaultContractAttribute(typeof(ServiceFault), Name = "servicefault", Namespace = "nms.gaming", Action = "http://www.nms.co.uk/gaming/servicefault")]
        nms.gaming.model.ExchangeRate[] ExchangeRateUpdate(string source, string destination, string rate);

        /// <summary>
        /// </summary>
        /// <param name="source"></param>
        /// <param name="destination"></param>
        /// <param name="rate"></param>
        /// <returns></returns>
        [OperationContract]
        [WebGet(UriTemplate = "{source}/{destination}/update?rate={rate}", ResponseFormat = WebMessageFormat.Json)]
        [FaultContractAttribute(typeof(ServiceFault), Name = "servicefault", Namespace = "nms.gaming", Action = "http://www.nms.co.uk/gaming/servicefault")]
        nms.gaming.model.ExchangeRate[] ExchangeRateUpdateJSON(string source, string destination, string rate);

        /// <summary>
        /// </summary>
        /// <param name="source"></param>
        /// <param name="destination"></param>
        /// <param name="rate"></param>
        /// <returns></returns>
        [OperationContract]
        [WebGet(UriTemplate = "{source}/{destination}/update$format=json?rate={rate}", ResponseFormat = WebMessageFormat.Json)]
        [FaultContractAttribute(typeof(ServiceFault), Name = "servicefault", Namespace = "nms.gaming", Action = "http://www.nms.co.uk/gaming/servicefault")]
        nms.gaming.model.ExchangeRate[] ExchangeRateUpdateJSON_EXPLICIT(string source, string destination, string rate);
    }

}
